package org.example.util;

import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;

import java.lang.reflect.Type;

public class GenericSuperclassUtil {

    /**
     * 获取泛型类Class对象，不是泛型类则返回null
     *
     * @param clazz 被查找泛型的类对象
     */
    public static Class<?> getActualTypeArgument(Class<?> clazz) {
        Type[] genericSuperclass = clazz.getGenericInterfaces();
        Type type = genericSuperclass[0];
        return (Class<?>) ((ParameterizedTypeImpl) type).getActualTypeArguments()[0];
    }
}
